package com.stud.common.utils.sign;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.DES;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import lombok.extern.slf4j.Slf4j;

/**
 * @author Stud
 * @title DES对称加密工具
 * @data 2022-09-22 17:23:14
 */
@Slf4j
public class DesUtil {

    private String salt;
    private DES des;

    private DesUtil(String salt) {
        this.salt = salt;
    }

    public static DesUtil init(String salt) {
        DesUtil desUtil = new DesUtil(salt);
        desUtil.des = SecureUtil.des(
                SecureUtil.generateKey(SymmetricAlgorithm.DES.getValue(), salt.getBytes()).getEncoded());
        return desUtil;
    }

    /**
     * 加密
     *
     * @param plainText 明文
     * @return 加密后信息
     */
    public String encrypt(String plainText) {
        return des.encryptHex(plainText);
    }

    /**
     * 解密
     *
     * @param cipherText 密文
     * @return 解密后信息
     */
    public String decrypt(String cipherText) {
        return des.decryptStr(cipherText);
    }


}
